#include "cputest.h"

TEST(test12, \
	"l_%=: \n\t" \
	"bsf %%eax, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test13, \
	"l_%=: \n\t" \
	"bsf %%eax, %%eax \n\t" \
	"bsf %%ebx, %%ebx \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test14, \
	"l_%=: \n\t" \
	"bsf %%eax, %%eax \n\t" \
	"bsf %%ebx, %%ebx \n\t" \
	"bsf %%edx, %%edx \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test15a, \
	"movl $0, %%eax \n\t" \
	"l_%=: \n\t" \
	"test $1, %%eax \n\t" \
	"jnz lb_%= \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"lb_%=: \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test15b, \
	"movl $1, %%eax \n\t" \
	"l_%=: \n\t" \
	"test $1, %%eax \n\t" \
	"jnz lb_%= \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"lb_%=: \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test16, \
	"l_%=: \n\t" \
	"test $1, %%ecx \n\t" \
	"jnz lb_%= \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"lb_%=: \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test17, \
	"l_%=: \n\t" \
	"test $1, %%ecx \n\t" \
	"nop \n\t" \
	"jnz lb_%= \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"lb_%=: \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test18, \
	"l_%=: \n\t" \
	"test $1, %%ecx \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"jnz lb_%= \n\t" \
	"nop \n\t" \
	"lb_%=: \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test19, \
	"l_%=: \n\t" \
	"test $1, %%ecx \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"nop \n\t" \
	"jnz lb_%= \n\t" \
	"lb_%=: \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test20, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test21, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm0, %%mm2 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test22, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm0, %%mm2 \n\t" \
	"paddb %%mm0, %%mm3 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test23, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm0, %%mm2 \n\t" \
	"paddb %%mm0, %%mm3 \n\t" \
	"paddb %%mm0, %%mm4 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test24, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm0, %%mm2 \n\t" \
	"paddb %%mm0, %%mm3 \n\t" \
	"paddb %%mm0, %%mm4 \n\t" \
	"paddb %%mm0, %%mm5 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test25, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm0, %%mm2 \n\t" \
	"paddb %%mm0, %%mm3 \n\t" \
	"paddb %%mm0, %%mm4 \n\t" \
	"paddb %%mm0, %%mm5 \n\t" \
	"paddb %%mm0, %%mm6 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test26, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm0, %%mm2 \n\t" \
	"paddb %%mm0, %%mm3 \n\t" \
	"paddb %%mm0, %%mm4 \n\t" \
	"paddb %%mm0, %%mm5 \n\t" \
	"paddb %%mm0, %%mm6 \n\t" \
	"paddb %%mm0, %%mm7 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test30, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test31, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test32, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test33, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test34, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"paddb %%mm4, %%mm5 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test35, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"paddb %%mm4, %%mm5 \n\t" \
	"paddb %%mm5, %%mm6 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test36, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"paddb %%mm4, %%mm5 \n\t" \
	"paddb %%mm5, %%mm6 \n\t" \
	"paddb %%mm6, %%mm7 \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test40, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"pextrw $0, %%mm1, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test41, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"pextrw $0, %%mm2, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test42, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"pextrw $0, %%mm3, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test43, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"pextrw $0, %%mm4, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test44, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"paddb %%mm4, %%mm5 \n\t" \
	"pextrw $0, %%mm5, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test45, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"paddb %%mm4, %%mm5 \n\t" \
	"paddb %%mm5, %%mm6 \n\t" \
	"pextrw $0, %%mm6, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

TEST(test46, \
	"l_%=: \n\t" \
	"paddb %%mm0, %%mm1 \n\t" \
	"paddb %%mm1, %%mm2 \n\t" \
	"paddb %%mm2, %%mm3 \n\t" \
	"paddb %%mm3, %%mm4 \n\t" \
	"paddb %%mm4, %%mm5 \n\t" \
	"paddb %%mm5, %%mm6 \n\t" \
	"paddb %%mm6, %%mm7 \n\t" \
	"pextrw $0, %%mm7, %%eax \n\t" \
	"loop l_%= \n\t" \
     )

test12: 4.041775
test13: 6.041519
test14: 8.161827
test15a: 7.161736
test15b: 5.042699
test16: 15.100544
test17: 15.515105
test18: 16.122277
test19: 12.499218
test20: 6.041451
test21: 6.041334
test22: 6.161652
test23: 8.168063
test24: 10.287427
test25: 12.460462
test26: 14.577563
test30: 6.041453
test31: 6.041424
test32: 6.041290
test33: 8.165309
test34: 12.500023
test35: 13.580653
test36: 16.623910
test40: 18.620404
test41: 25.043344
test42: 31.378481
test43: 37.532010
test44: 43.998953
test45: 50.334004
test46: 56.552376
